package com.aydqyy.springbootstart.dto;

import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import jakarta.validation.groups.Default;

public class UserDTO {

    // 用户ID，不能为空
    @NotNull(message = "用户ID不能为空",groups={UpdatePassword.class,Update.class})
    private Integer id;
    // 用户名，不能为空
    @NotBlank(message = "用户名不能为空",groups={Update.class,Default.class})
    private String name;
    // 原密码，不能为空
    @NotBlank(message = "原密码不能为空",groups = UpdatePassword.class)
    private String oldPassword;
    // 密码，长度至少5位
    @Size(min = 5, message = "密码长度至少5位",groups={UpdatePassword.class,Update.class,Default.class})
    private String password;

    // 重复密码，长度至少5位
    @Size(min = 5, message = "密码长度至少5位",groups=UpdatePassword.class)
    private String rePassword;
    // 获取用户名
    public String getName() {
        return name;
    }

    // 获取密码
    public String getPassword() {
        return password;
    }

    // 设置用户名
    public void setName(String name) {
        this.name = name;
    }

    // 设置密码
    public void setPassword(String password) {

        this.password = password;
    }
    // 获取原密码
    public String getOldPassword() {
        return oldPassword;
    }

    // 设置原密码
    public void setOldPassword(String oldPassword) {
        this.oldPassword = oldPassword;
    }
    // 设置用户ID
    public void setId(Integer id) {
        this.id = id;
    }
    // 获取用户ID
    public Integer getId() {
        return id;
    }

    // 获取重复密码
    public String getRePassword() {
        return rePassword;
    }

    // 设置重复密码
    public void setRePassword(String rePassword) {
        this.rePassword = rePassword;
    }
    @AssertTrue(message = "两次密码不一致",groups = UpdatePassword.class)
    private boolean isPasswordEquals() {
        return password!=null&&password.equals(rePassword);

    }



    // 更新用户信息
    public interface Update extends Default {}
    // 更新用户密码
    public interface UpdatePassword{}
}
